package com.kandroid.designpattern.state.demo2;

public class Demo2 {

    public static void main(String[] args) {
        ATM atm = new ATM(2000);

        atm.printState();

        print("==============无卡状态下插入银行卡==============");
        atm.insertBankCard();

        print("=======无卡状态下插入银行卡========");
        atm.insertBankCard();
        atm.printState();

        print("\n=======有卡状态下再次插入卡========");
        atm.insertBankCard();
        atm.printState();

        print("\n=======有卡状态输入密码========");
        atm.inputPassword();
        print("=======密码正确状态输入取款金额：1000========");
        atm.inputMoney(1000);
        print("=======可取款状态进行取款========");
        atm.tapOkButton();
        atm.printState();

        print("\n=======取款后再次输入密码进行提款========");
        atm.inputPassword();
        print("=======密码正确状态输入取款金额：18500========");
        atm.inputMoney(18500);
        print("=======可取款状态进行取款========");
        atm.tapOkButton();
        atm.printState();

        print("\n=======退卡========");
        atm.backBankCard();
        atm.printState();

        print("\n=======重新插入银行卡=======");
        atm.insertBankCard();
        atm.printState();

        print("\n=======重新插卡后输入密码进行提款========");
        atm.inputPassword();
        print("=======密码正确状态输入取款金额：800========");
        atm.inputMoney(800);
        print("=======可取款状态进行取款========");
        atm.tapOkButton();
        atm.printState();

        print("\n====ATM金额不足时调用输入密码操作=====");
        atm.inputPassword();
        print("=======密码正确状态输入取款金额：500========");
        atm.inputMoney(500);
        print("=======可取款状态进行取款========");
        atm.tapOkButton();
        atm.printState();


    }

    private static void print(String msg) {
        System.out.println(msg);
    }
}
